Das Öffnen eines Recordset stellt in der Regel mehrere Datensätze bereit. Diese werden meist in einer Schleife durchlaufen. Der folgende Ausschnitt aus der Ereignisprozedur Form_Open des Formulars FrmStart von Access_Quiz.mdb durchläuft alle Sätze des Recordset rstSCORESMCSchlüssel, um die Tabelle SCORESMC mit Skelettsätzen zu initialisieren. SCORESMC speichert die Mehrfachwahl-Antworten des Quizteilnehmers.
Der folgende Entwurf beschreibt die lesende Navigation durch den Recordset rstSCORESMCSchlüssel und das schreibende Anfügen in den Recordset rstSCORESMC:
Bilde aus der leeren Tabelle SCORESMC den Recordset rstSCORESMC Bilde aus Fragenschlüssel und Alternativenschlüssel von QuizMEHRFACHWAHL den Recordset rstSCORESMCSchlüssel Solange rstSCORESMCSchlüssel nicht fertig Füge einen Satz mit den folgenden Feldern an SCORESMC: Fragenschlüssel = Fragenschlüssel von rstSCORESMCSchlüssel Alternativenschlüssel = Alternativenschlüssel von rstSCORESMCSchlüssel Matrikelnummer = Matrikelnummer des Quizteilnehmers Testschlüssel = Testschlüssel des Quizteilnehmers Benutzerlösung = False Gehe zum nächsten Satz von rstSCORESMCSchlüssel Schliesse rstSCORESMC und rstSCORESMCSchlüssel
Der folgende VBA-Code implementiert den Entwurfscode. Im Gegensatz zum Entwurfscode kann er sich aber nicht darauf beschränken, die Programmlogik leserfreundlich zu beschreiben, sondern ist an die Syntax und Semantik von VBA gebunden. Dazu gehören rein implementationstechnische Entscheidungen, die nichts mit der Programmlogik zu tun haben. Zum Beispiel spezifiziert dbOpenDynaset das schreibende Durchlaufen eines Recordset, während dbOpenForwardOnly nur die vorwärtslesende Navigation erlaubt.
... '-- Objektvariablen initialisieren Set rstSCORESMC = .OpenRecordset("SCORESMC", dbOpenDynaset) Set rstSCORESMCSchlüssel = .OpenRecordset( _ "SELECT QuizMEHRFACHWAHL.Fragenschlüssel,QuizMEHRFACHWAHL.Alternativenschlüssel " & _ "FROM QuizMEHRFACHWAHL;", dbOpenForwardOnly)'-- SCORESMC-Skelett erstellen ' -------------------------- ' Feld Fragenschlüssel ist identisch mit jenem von QuizMehrfachwahl ' Feld Alternativenschlüssel ist analog zu jenem von QuizMehrfachwahl ' Feld Matrikelnummer ist bei Selbstkorrektur -1 ' Feld Testschlüssel ist bei Selbstkorrektur -1 ' Feld Benutzerlösung = False (leeres Kontrollkästchen, das der Benutzer später setzt) With rstSCORESMC Do While Not rstSCORESMCSchlüssel.EOF '- Satzskelett an das Ende von SCORESMC fügen .AddNew !Fragenschlüssel = rstSCORESMCSchlüssel!Fragenschlüssel !Alternativenschlüssel = rstSCORESMCSchlüssel!Alternativenschlüssel !Matrikelnummer = Matrikelnummer_des_Pb !Testschlüssel = Testschlüssel_des_Pb !Benutzerlösung = False 'später mit Benutzereingabe überschreiben .Update 'Änderungen endgültig speichern rstSCORESMCSchlüssel.MoveNext Loop rstSCORESMCSchlüssel.Close Set rstSCORESMCSchlüssel = Nothing .Close End With Set rstSCORESMC = Nothing ...